home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / security / ProtectionDomain.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  4.2 KB  |  182 lines

  1. package java.security;
  2.  
  3. import [Ljava.security.Principal;;
  4. import java.util.ArrayList;
  5. import java.util.Enumeration;
  6. import sun.security.util.Debug;
  7. import sun.security.util.SecurityConstants;
  8.  
  9. public class ProtectionDomain {
  10.    private CodeSource codesource;
  11.    private ClassLoader classloader;
  12.    private Principal[] principals;
  13.    private PermissionCollection permissions;
  14.    private boolean hasAllPerm = false;
  15.    private boolean staticPermissions;
  16.    private static final Debug debug = Debug.getInstance("domain");
  17.  
  18.    public ProtectionDomain(CodeSource var1, PermissionCollection var2) {
  19.       this.codesource = var1;
  20.       if (var2 != null) {
  21.          this.permissions = var2;
  22.          this.permissions.setReadOnly();
  23.          if (var2 instanceof Permissions && ((Permissions)var2).allPermission != null) {
  24.             this.hasAllPerm = true;
  25.          }
  26.       }
  27.  
  28.       this.classloader = null;
  29.       this.principals = new Principal[0];
  30.       this.staticPermissions = true;
  31.    }
  32.  
  33.    public ProtectionDomain(CodeSource var1, PermissionCollection var2, ClassLoader var3, Principal[] var4) {
  34.       this.codesource = var1;
  35.       if (var2 != null) {
  36.          this.permissions = var2;
  37.          this.permissions.setReadOnly();
  38.          if (var2 instanceof Permissions && ((Permissions)var2).allPermission != null) {
  39.             this.hasAllPerm = true;
  40.          }
  41.       }
  42.  
  43.       this.classloader = var3;
  44.       this.principals = var4 != null ? (Principal[])((Principal[])((Principal;)var4).clone()) : new Principal[0];
  45.       this.staticPermissions = false;
  46.    }
  47.  
  48.    public final CodeSource getCodeSource() {
  49.       return this.codesource;
  50.    }
  51.  
  52.    public final ClassLoader getClassLoader() {
  53.       return this.classloader;
  54.    }
  55.  
  56.    public final Principal[] getPrincipals() {
  57.       return (Principal[])this.principals.clone();
  58.    }
  59.  
  60.    public final PermissionCollection getPermissions() {
  61.       return this.permissions;
  62.    }
  63.  
  64.    public boolean implies(Permission var1) {
  65.       if (this.hasAllPerm) {
  66.          return true;
  67.       } else if (!this.staticPermissions && Policy.getPolicyNoCheck().implies(this, var1)) {
  68.          return true;
  69.       } else {
  70.          return this.permissions != null ? this.permissions.implies(var1) : false;
  71.       }
  72.    }
  73.  
  74.    public String toString() {
  75.       String var1 = "<no principals>";
  76.       if (this.principals != null && this.principals.length > 0) {
  77.          StringBuilder var2 = new StringBuilder("(principals ");
  78.  
  79.          for(int var3 = 0; var3 < this.principals.length; ++var3) {
  80.             var2.append(this.principals[var3].getClass().getName() + " \"" + this.principals[var3].getName() + "\"");
  81.             if (var3 < this.principals.length - 1) {
  82.                var2.append(",\n");
  83.             } else {
  84.                var2.append(")\n");
  85.             }
  86.          }
  87.  
  88.          var1 = var2.toString();
  89.       }
  90.  
  91.       PermissionCollection var4 = Policy.isSet() && seeAllp() ? this.mergePermissions() : this.getPermissions();
  92.       return "ProtectionDomain  " + this.codesource + "\n" + " " + this.classloader + "\n" + " " + var1 + "\n" + " " + var4 + "\n";
  93.    }
  94.  
  95.    private static boolean seeAllp() {
  96.       SecurityManager var0 = System.getSecurityManager();
  97.       if (var0 == null) {
  98.          return true;
  99.       } else {
  100.          if (debug != null) {
  101.             if (var0.getClass().getClassLoader() == null && Policy.getPolicyNoCheck().getClass().getClassLoader() == null) {
  102.                return true;
  103.             }
  104.          } else {
  105.             try {
  106.                var0.checkPermission(SecurityConstants.GET_POLICY_PERMISSION);
  107.                return true;
  108.             } catch (SecurityException var2) {
  109.             }
  110.          }
  111.  
  112.          return false;
  113.       }
  114.    }
  115.  
  116.    private PermissionCollection mergePermissions() {
  117.       if (this.staticPermissions) {
  118.          return this.permissions;
  119.       } else {
  120.          PermissionCollection var1 = (PermissionCollection)AccessController.doPrivileged(new 1(this));
  121.          Permissions var2 = new Permissions();
  122.          byte var3 = 32;
  123.          int var4 = 8;
  124.          ArrayList var6 = new ArrayList(var4);
  125.          ArrayList var7 = new ArrayList(var3);
  126.          if (this.permissions != null) {
  127.             synchronized(this.permissions) {
  128.                Enumeration var5 = this.permissions.elements();
  129.  
  130.                while(var5.hasMoreElements()) {
  131.                   Permission var9 = (Permission)var5.nextElement();
  132.                   var6.add(var9);
  133.                }
  134.             }
  135.          }
  136.  
  137.          if (var1 != null) {
  138.             synchronized(var1) {
  139.                for(Enumeration var19 = var1.elements(); var19.hasMoreElements(); ++var4) {
  140.                   var7.add(var19.nextElement());
  141.                }
  142.             }
  143.          }
  144.  
  145.          if (var1 != null && this.permissions != null) {
  146.             synchronized(this.permissions) {
  147.                Enumeration var20 = this.permissions.elements();
  148.  
  149.                while(var20.hasMoreElements()) {
  150.                   Permission var22 = (Permission)var20.nextElement();
  151.                   Class var10 = var22.getClass();
  152.                   String var11 = var22.getActions();
  153.                   String var12 = var22.getName();
  154.  
  155.                   for(int var13 = 0; var13 < var7.size(); ++var13) {
  156.                      Permission var14 = (Permission)var7.get(var13);
  157.                      if (var10.isInstance(var14) && var12.equals(var14.getName()) && var11.equals(var14.getActions())) {
  158.                         var7.remove(var13);
  159.                         break;
  160.                      }
  161.                   }
  162.                }
  163.             }
  164.          }
  165.  
  166.          if (var1 != null) {
  167.             for(int var8 = var7.size() - 1; var8 >= 0; --var8) {
  168.                var2.add((Permission)var7.get(var8));
  169.             }
  170.          }
  171.  
  172.          if (this.permissions != null) {
  173.             for(int var21 = var6.size() - 1; var21 >= 0; --var21) {
  174.                var2.add((Permission)var6.get(var21));
  175.             }
  176.          }
  177.  
  178.          return var2;
  179.       }
  180.    }
  181. }
  182.